package com.cellulam.framework.mq.listener;

import org.springframework.stereotype.Component;

import java.lang.annotation.*;

/**
 * 标示 消息消费监听
 */
@Component
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
public @interface MqConsumer {

    /**
     * GROUP ID，一个实例的group不能重复，分布式同一group下消费者订阅必须完全一样
     * @return
     */
    String groupId();

    /**
     * topic
     *
     * @return
     */
    String topic();

    /**
     * 标签
     *
     * @return
     */
    String[] tags() default {};

    /**
     * 消费者(线程)个数，默认3个
     *
     * @return
     */
    int concurrentConsumers() default 3;


    /**
     * 顺序消息消费失败进行重试前的等待时间，单位(毫秒)，取值范围: 10 毫秒 ~ 1800 毫秒
     */
    int suspendTimeMillis() default 1500;

    /**
     * 消息消费失败时的最大重试次数
     */
    int maxReConsumeTimes() default 20;

    /**
     * 消费线程超时
     */
    int consumeTimeout() default 5000;
}
